package org.example.model.common;


import lombok.Data;




@Data

public class Result<T> {


    //返回码

    private Integer code;

    //返回消息

    private String message;

    //返回数据

    private T data;

    private Result() {
    }

    /**
     * 构建并返回一个包含指定代码、消息和数据的Result对象
     * 该方法提供了一种统一的方式来创建和初始化Result对象，便于后续代码重用和维护
     *
     * @param code 状态码，用于标识操作是否成功或失败
     * @param message 操作结果的描述信息，可以是错误信息、成功提示等
     * @param data 业务数据，根据操作结果的具体情况可能为空或包含实际数据
     * @param <T> 泛型参数，表示业务数据的类型
     * @return 包含了指定code、message和data的Result对象
     */
    public static <T> Result<T> build( Integer code,String message,T data) {
        Result<T> result = new Result<T>();
        result.setCode(code);
        result.setMessage(message);
        result.setData(data);
        return result;
    }



    /**
     * 构建一个泛型结果对象
     *
     * @param code 结果代码
     * @param message 结果消息
     * @param <T> 泛型参数，表示结果数据的类型
     * @return 返回构建的结果对象
     */
    public static <T> Result<T> build( Integer code,String message) {
        Result<T> result = new Result<T>();
        result.setCode(code);
        result.setMessage(message);
        return result;
    }


    public static <T> Result  build (T data,ResultCodeEnum resultCodeEnum){

        return build(resultCodeEnum.getCode(),resultCodeEnum.getMessage(),data);
    }




}
